home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / c-tools / c_examples / status / iterator.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-24  |  1.1 KB  |  64 lines

  1. //////////////////////////////////////////////////////////////////////////////
  2. // iterator.cpp
  3. //
  4. // Jeffry A Worth
  5. // January 28, 1996
  6. //////////////////////////////////////////////////////////////////////////////
  7.  
  8. //////////////////////////////////////////////////////////////////////////////
  9. // INCLUDES
  10.  
  11. #include "aframe:include/iterator.hpp"
  12.  
  13. //////////////////////////////////////////////////////////////////////////////
  14. //
  15.  
  16. AFPtrDlistIterator::AFPtrDlistIterator(AFPtrDlist& list)
  17.     :m_list(&list),
  18.     m_key(NULL),
  19.     m_index(0)
  20. {
  21. }
  22.  
  23. void
  24. AFPtrDlistIterator::reset()
  25. {
  26.     m_index=0;
  27.     m_key=NULL;
  28. }
  29.  
  30. BOOL
  31. AFPtrDlistIterator::operator++()
  32. {
  33.     if(m_key)
  34.         return((m_key=(*m_list)[++m_index])!=NULL);
  35.     return((m_key=(*m_list)[m_index=0])!=NULL);
  36. }
  37.  
  38. BOOL
  39. AFPtrDlistIterator::operator--()
  40. {
  41.     if(m_key)
  42.         return((m_key=(*m_list)[--m_index])!=NULL);
  43.     return((m_key=(*m_list)[m_index=m_list->entries()-1])!=NULL);
  44. }
  45.  
  46. BOOL
  47. AFPtrDlistIterator::removeKey()
  48. {
  49.     if(m_key) {
  50.         m_list->remove(m_index,TRUE);
  51.         if(m_index>0)
  52.             m_index--;
  53.         return((m_key=(*m_list)[m_index])!=NULL);
  54.     }
  55.     return FALSE;
  56. }
  57.  
  58.  
  59. AFObject*
  60. AFPtrDlistIterator::key()
  61. {
  62.     return m_key;
  63. }
  64.